home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 11
/
Cream of the Crop 11-1.iso
/
comm
/
tcp4w15.zip
/
KOALA.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1995-07-09
|
3KB
|
117 lines
Program PWTN;
{$A+,B-,D+,F-,G+,I-,K+,L+,N-,P+,Q+,R+,S+,T+,V+,W+,X+,Y+}
{$M 8192,8192}
{Simple Koala Client for TCP4W}
Uses WinTypes, WinProcs, WinCrt, Strings, UseTcp4w;
Const LTIL = $7000;
Type PLongTextItem = ^TLongTextItem;
TLongTextItem = Array [0..LTIL] Of Char;
Var Status: Integer;
S: TSocket;
Port: Integer;
T: PLongTextItem;
SaveExitProc : Pointer;
Procedure WriteWinsockVerInfo;
Const WSADESCRIPTION_LEN = 256;
WSASYS_STATUS_LEN = 128;
Type TWSAData = Record
wVersion: Word;
wHighVersion: Word;
szDescription: Array [0..WSADESCRIPTION_LEN] Of Char;
szSystemStatus: Array [0..WSASYS_STATUS_LEN] Of Char;
iMaxSockets: Byte;
iMaxUdpDg: Byte;
lpVendorInfo: Pointer;
End;
TWSAStartUp = Function (wVersionRequested: Word; WSAData: TWSAData): Integer;
TWSACleanup = Function: Integer;
Var WSAData: TWSAData;
hWinsock: THandle;
FP : TFarProc;
Begin
hWinsock := LoadLibrary ('WINSOCK');
If hWinsock >= 32 Then
Begin
FP := GetProcAddress (hWinsock, 'WSAStartup');
If FP <> NIL Then
If TWSAStartUp (FP) (257, WSAData) = 0 Then
WriteLn (WSAData.szDescription);
FP := GetProcAddress (hWinsock, 'WSACleanup');
If FP <> NIL Then TWSACleanUp (FP);
FreeLibrary (hWinsock)
End
End;
Procedure CheckStatus;
Begin
If Status > 0 Then Exit;
WriteLn;
WriteLn ('?', Tcp4W_Error (Status));
Halt
End;
Procedure MyExitProc; Far;
Begin
ExitProc := SaveExitProc;
If S <> 0 Then TcpClose (S);
Tcp4WCleanup;
End;
Procedure GetAnswer;
Begin
Status := TcpRecv (S, T^, LTIL, 1000, -1);
CheckStatus;
T^[Status] := #0;
Write (T^)
End;
Procedure MainLoop;
Begin
Repeat
ReadLn (T^);
StrCat (T^, #13#10);
If StrLIComp (T^, 'EXIT', 4) = 0 Then Exit;
If StrLIComp (T^, 'ENDE', 4) = 0 Then Exit;
If StrLIComp (T^, 'QUIT', 4) = 0 Then Exit;
Status := TcpSend (S, T^, StrLen (T^) , False, -1);
CheckStatus;
GetAnswer;
Until False
End;
Begin
CheckBreak := False;
CmdShow := sw_ShowMaximized;
AutoTracking := False;
New (T);
WriteLn ('Simple Koala Client by AStA (Andreas.Tikart@uni-konstanz.de) <Polarwolf>');
Tcp4wVer (T^, 0);
WriteLn (T^);
WriteWinsockVerInfo;
WriteLn;
S := 0;
Port := 775;
SaveExitProc := ExitProc;
ExitProc := @MyExitProc;
Status := Tcp4wInit;
CheckStatus;
Status := TcpConnect (S, 'polydos.uni-konstanz.de', '', Port);
CheckStatus;
GetAnswer;
GetAnswer;
MainLoop;
TcpClose (S);
S := 0;
CheckStatus;
Tcp4WCleanUp;
ExitProc := SaveExitProc;
DoneWinCrt;
End.